<template>
  <div>
    <h3 style="text-align: center" v-if="$route.query.type === 'user'">
      导入员工
    </h3>
    <h3 style="text-align: center" v-if="$route.query.type === 'jixiao'">
      导入绩效
    </h3>
    <!-- 公共导入组件 -->
    <upload-excel :on-success="success" />
  </div>
</template>
<script>
import { batchImportUser } from "@/api/employees";
export default {
  name: "ImportExcel",
  methods: {
    // 读取Excel成功的时间
    success(data) {
      if (this.$route.query.type === "user") {
        // 导入员工的逻辑
        this.uploadExcelUser(data);
      }
      if (this.$route.query.type === "jixiao") {
        // 导入绩效的逻辑
      }
    },
    // 处理导入员工
    async uploadExcelUser({ header, results }) {
      //results [{入职日期:3222,姓名:'高大山',手机号:18868816112,转正日期:43719},{...},{...}]
      //results [{timeOfEntry:3222,username:'高大山',mobile:18868816112,correctionTime:43719},{...},{...}]
      // 第1步、 处理数据
      const userRelations = {
        入职日期: "timeOfEntry",
        手机号: "mobile",
        姓名: "username",
        转正日期: "correctionTime",
        工号: "workNumber",
      };
      let arr = []; // 结果数组
      results.forEach((item) => {
        // item是数组中每一组的数据对象  {入职日期:3222,姓名:'高大山',手机号:18868816112,转正日期:43719}
        // console.log(item);  // 每行数据    // Object.keys(item) [入职日期,姓名,手机号,转正日期]
        let obj = {};
        Object.keys(item).forEach((name) => {
          //   console.log(name); // 每个中文键
          //   userRelations[name]中文键对应的英文
          //   item[name] 中文键对应的数据值
          //   console.log(name, userRelations[name], item[name]);
          if (["timeOfEntry", "correctionTime"].includes(userRelations[name])) {
            obj[userRelations[name]] = this.formatDate(item[name], "/");
          } else {
            obj[userRelations[name]] = item[name];
          }
        });
        arr.push(obj);
      });
      // 第2步、 发生请求提交数据
      await batchImportUser(arr);
      //   第3步： 提成成功
      this.$message.success("导入成功");
      // 第4步：返回
      this.$router.back();
    },
    // 将Excel里面读取日期内容吗，转正真正的字符串日期
    formatDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1);
      time.setYear(time.getFullYear() - 70);
      const year = time.getFullYear() + "";
      const month = time.getMonth() + 1 + "";
      const date = time.getDate() - 1 + "";
      if (format && format.length === 1) {
        return year + format + month + format + date;
      }
      return (
        year +
        (month < 10 ? "0" + month : month) +
        (date < 10 ? "0" + date : date)
      );
    },
  },
};
</script>
